/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servlet;

import Service.Main;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


/**
 *
 * @author ale
 */
public class Thread extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    private void forward(HttpServletRequest request, HttpServletResponse response, String page) throws ServletException,IOException {
        /*Creo un oggetto servlet context che mi permette di interagire con la servlet*/
        ServletContext context = getServletContext();
        /* Il request dispatcher può essere utilizzato per aggiungere una risorsa alla ripsosta*/
        RequestDispatcher rd = context.getRequestDispatcher(page);
        rd.forward(request, response);
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
           doGet(request, response);
    }
   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String azione = request.getParameter("op");
        /* Se non vi è l'ogetto session lo creo*/
        HttpSession session = request.getSession(true);
        /* Creo il thread*/
        Main thread =Main.getSingleton();
        /*Gestione delle operazioni*/       
        if (azione == null) {            
            /*DEFAULT*/
            forward(request,response,"/gestione.jsp");        
            return;    
        } else if (azione.equalsIgnoreCase("start")) {
             /* START
              * Operazione di avvio del thread
              */
              thread.start(); 
              forward(request,response,"/gestione.jsp");
              return;
        } else if (azione.equalsIgnoreCase("stop")) {
              /* STOP
              * Operazione di blocco del thread
              */
                try{
                    thread.stopThread();
                    
                }catch(NullPointerException e){ /*Sto bloccando un thread che non esiste*/}
                forward(request,response,"/gestione.jsp");
                return;
         } else {      
            /* OPERAZIONE NON CONOSCIUTA
             * Nel caso non un'operazione non sia riconosciuta, eseguo delle istruzioni
             * di default.
             */
            forward(request,response,"/gestione.jsp");
            return;        
        }
    }
    
      @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          doGet(request,response);
    }
}